package com.xlh.support.quiz.service;

import com.xlh.dto.courseTest.experiment.TheoryChapterStatisticsExportDTO;
import com.xlh.support.quiz.constant.QuizPerformanceEnum;
import com.xlh.support.quiz.po.QuizAnswerPO;
import com.xlh.support.quiz.po.QuizAssessPO;
import com.xlh.support.quiz.vo.PerformanceVO;

import java.util.List;

/**
 * @author cheer
 */
public interface QuizService {

    /**
     * 发起提问
     *
     * @param quizId 提问Id
     */
    void askQuiz(Long quizId);

    /**
     * 回答提问
     *
     * @param userId       用户Id
     * @param quizId       提问Id
     * @param quizAnswerPO 回答参数
     */
    void answerQuiz(Long userId, Long quizId, QuizAnswerPO quizAnswerPO);

    /**
     * 结束提问
     *
     * @param quizId 提问Id
     * @return 提问结果
     */
    PerformanceVO endQuiz(Long quizId);

    /**
     * 评价提问
     *
     * @param quizId       提问Id
     * @param quizAssessPO 评价参数
     */
    void assessQuiz(Long quizId, QuizAssessPO quizAssessPO);

    /**
     * 提问是否进行中
     *
     * @param quizId 提问Id
     * @return 如果进行中返回true，否则返回false
     */
    Boolean isQuizRunning(Long quizId);

    /**
     * 清空正在进行的提问
     *
     * @param quizIds    提问Id集合
     * @param chapterIds 章节Id集合
     */
    void deleteRunningQuiz(List<Long> quizIds, List<Long> chapterIds);


    /**
     * 查询用户的随堂答题情况
     * @param chapterId
     * @param userIds
     * @return
     */
    List<TheoryChapterStatisticsExportDTO>  getUserPerformanceByChapterId(Long chapterId, List<Long> userIds);


}
